--------V-104F00-----------------------------
INT 10 - VESA SuperVGA BIOS (VBE) - GET SuperVGA INFORMATION
	AX = 4F00h
	ES:DI -> buffer for SuperVGA information (see #00077)
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
		ES:DI buffer filled
	    01h failed
	    ---VBE v2.0---
	    02h function not supported by current hardware configuration
	    03h function invalid in current video mode
Desc:	determine whether VESA BIOS extensions are present and the capabilities
	  supported by the display adapter
SeeAlso: AX=4E00h,AX=4F01h,AX=7F00h"SOLLEX",AX=A00Ch
Index:	installation check;VESA SuperVGA

Format of SuperVGA information:
Offset	Size	Description	(Table 00077)
 00h  4 BYTEs	(ret) signature ("VESA")
		(call) VESA 2.0 request signature ("VBE2"), required to receive
		  version 2.0 info
 04h	WORD	VESA version number (one-digit minor version -- 0102h = v1.2)
 06h	DWORD	pointer to OEM name
		"761295520" for ATI
 0Ah	DWORD	capabilities flags (see #00078)
 0Eh	DWORD	pointer to list of supported VESA and OEM video modes
		(list of words terminated with FFFFh)
 12h	WORD	total amount of video memory in 64K blocks
---VBE v1.x ---
 14h 236 BYTEs	reserved
---VBE v2.0 ---
 14h	WORD	OEM software version (BCD, high byte = major, low byte = minor)
 16h	DWORD	pointer to vendor name
 1Ah	DWORD	pointer to product name
 1Eh	DWORD	pointer to product revision string
 22h	WORD	(if capabilities bit 3 set) VBE/AF version (BCD)
		0100h for v1.0P
 24h	DWORD	(if capabilities bit 3 set) pointer to list of supported
		  accelerated video modes (list of words terminated with FFFFh)
 28h 216 BYTEs	reserved for VBE implementation
100h 256 BYTEs	OEM scratchpad (for OEM strings, etc.)
Notes:	the list of supported video modes is stored in the reserved portion of
	  the SuperVGA information record by some implementations, and it may
	  thus be necessary to either copy the mode list or use a different
	  buffer for all subsequent VESA calls
	not all of the video modes in the list of mode numbers may be
	  supported, e.g. if they require more memory than currently installed
	  or are not supported by the attached monitor.	 Check any mode you
	  intend to use through AX=4F01h first.
	the 1.1 VESA document specifies 242 reserved bytes at the end, so the
	  buffer should be 262 bytes to ensure that it is not overrun; for
	  v2.0, the buffer should be 512 bytes
	the S3 specific video modes will most likely follow the FFFFh
	  terminator at the end of the standard modes.	A search must then
	  be made to find them, FFFFh will also terminate this second list
	in some cases, only a "stub" VBE may be present, supporting only
	  AX=4F00h; this case may be assumed if the list of supported video
	  modes is empty (consisting of a single word of FFFFh)

Bitfields for VESA capabilities:
Bit(s)	Description	(Table 00078)
 0	DAC can be switched into 8-bit mode
 1	non-VGA controller
 2	programmed DAC with blank bit (i.e. only during blanking interval)
 3	(VBE v3.0) controller supports hardware stereoscopic signalling
 3	controller supports VBE/AF v1.0P extensions
 4	(VBE v3.0) if bit 3 set:
	    =0 stereo signalling via external VESA stereo connector
	    =1 stereo signalling via VESA EVC connector
 4	(VBE/AF v1.0P) must call EnableDirectAccess to access framebuffer
 5	(VBE/AF v1.0P) controller supports hardware mouse cursor
 6	(VBE/AF v1.0P) controller supports hardware clipping
 7	(VBE/AF v1.0P) controller supports transparent BitBLT
 8-31	reserved (0)
SeeAlso: #00077,AX=4F09h
--------V-104F01-----------------------------
INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
	AX = 4F01h
	CX = SuperVGA video mode (see #04082 for bitfields)
	ES:DI -> 256-byte buffer for mode information (see #00079)
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
		ES:DI buffer filled
	    01h failed
Desc:	determine the attributes of the specified video mode
SeeAlso: AX=4F00h,AX=4F02h

Bitfields for VESA/VBE video mode number:
Bit(s)	Description	(Table 04082)
 15	preserve display memory on mode change
 14	(VBE v2.0+) use linear (flat) frame buffer
 13	(VBE/AF 1.0P) VBE/AF initializes accelerator hardware
 12	reserved for VBE/AF
 11	(VBE v3.0) user user-specified CRTC refresh rate values
 10-9	reserved for future expansion
 8-0	video mode number (0xxh are non-VESA modes, 1xxh are VESA-defined)

Format of VESA SuperVGA mode information:
Offset	Size	Description	(Table 00079)
 00h	WORD	mode attributes (see #00080)
 02h	BYTE	window attributes, window A (see #00081)
 03h	BYTE	window attributes, window B (see #00081)
 04h	WORD	window granularity in KB
 06h	WORD	window size in KB
 08h	WORD	start segment of window A (0000h if not supported)
 0Ah	WORD	start segment of window B (0000h if not supported)
 0Ch	DWORD	-> FAR window positioning function (equivalent to AX=4F05h)
 10h	WORD	bytes per scan line
---remainder is optional for VESA modes in v1.0/1.1, needed for OEM modes---
 12h	WORD	width in pixels (graphics) or characters (text)
 14h	WORD	height in pixels (graphics) or characters (text)
 16h	BYTE	width of character cell in pixels
 17h	BYTE	height of character cell in pixels
 18h	BYTE	number of memory planes
 19h	BYTE	number of bits per pixel
 1Ah	BYTE	number of banks
 1Bh	BYTE	memory model type (see #00082)
 1Ch	BYTE	size of bank in KB
 1Dh	BYTE	number of image pages (less one) that will fit in video RAM
 1Eh	BYTE	reserved (00h for VBE 1.0-2.0, 01h for VBE 3.0)
---VBE v1.2+ ---
 1Fh	BYTE	red mask size
 20h	BYTE	red field position
 21h	BYTE	green mask size
 22h	BYTE	green field size
 23h	BYTE	blue mask size
 24h	BYTE	blue field size
 25h	BYTE	reserved mask size
 26h	BYTE	reserved mask position
 27h	BYTE	direct color mode info
		bit 0: color ramp is programmable
		bit 1: bytes in reserved field may be used by application
---VBE v2.0+ ---
 28h	DWORD	physical address of linear video buffer
 2Ch	DWORD	pointer to start of offscreen memory
 30h	WORD	KB of offscreen memory
---VBE v3.0 ---
 32h	WORD	bytes per scan line in linear modes
 34h	BYTE	number of images (less one) for banked video modes
 35h	BYTE	number of images (less one) for linear video modes
 36h	BYTE	linear modes: size of direct color red mask (in bits)
 37h	BYTE	linear modes: bit position of red mask LSB (e.g. shift count)
 38h	BYTE	linear modes: size of direct color green mask (in bits)
 39h	BYTE	linear modes: bit position of green mask LSB (e.g. shift count)
 3Ah	BYTE	linear modes: size of direct color blue mask (in bits)
 3Bh	BYTE	linear modes: bit position of blue mask LSB (e.g. shift count)
 3Ch	BYTE	linear modes: size of direct color reserved mask (in bits)
 3Dh	BYTE	linear modes: bit position of reserved mask LSB
 3Eh	DWORD	maximum pixel clock for graphics video mode, in Hz
 42h 190 BYTEs	reserved (0)
Note:	while VBE 1.1 and higher will zero out all unused bytes of the buffer,
	  v1.0 did not, so applications that want to be backward compatible
	  should clear the buffer before calling

Bitfields for VESA SuperVGA mode attributes:
Bit(s)	Description	(Table 00080)
 0	mode supported by present hardware configuration
 1	optional information available (must be =1 for VBE v1.2+)
 2	BIOS output supported
 3	set if color, clear if monochrome
 4	set if graphics mode, clear if text mode
---VBE v2.0+ ---
 5	mode is not VGA-compatible
 6	bank-switched mode not supported
 7	linear framebuffer mode supported
 8	double-scan mode available (e.g. 320x200 and 320x240)
---VBE v3.0 ---
 9	interlaced mode available
 10	hardware supports triple buffering
 11	hardware supports stereoscopic display
 12	dual display start address support
 13-15	reserved
---VBE/AF v1.0P---
 9	application must call EnableDirectAccess before calling bank-switching
	  functions
SeeAlso: #00079

Bitfields for VESA SuperVGA window attributes:
Bit(s)	Description	(Table 00081)
 0	exists
 1	readable
 2	writable
 3-7	reserved
SeeAlso: #00079

(Table 00082)
Values for VESA SuperVGA memory model type:
 00h	text
 01h	CGA graphics
 02h	HGC graphics
 03h	16-color (EGA) graphics
 04h	packed pixel graphics
 05h	"sequ 256" (non-chain 4) graphics
 06h	direct color (HiColor, 24-bit color)
 07h	YUV (luminance-chrominance, also called YIQ)
 08h-0Fh reserved for VESA
 10h-FFh OEM memory models
SeeAlso: #00079
--------V-104F02-----------------------------
INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
	AX = 4F02h
	BX = new video mode (see #04082,#00083,#00084)
	ES:DI -> (VBE 3.0+) CRTC information block, bit mode bit 11 set
		  (see #04083)
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
	    01h failed
Notes:	bit 13 may only be set if the video mode is present in the list of
	  accelerated video modes returned by AX=4F00h
	if the DAC supports both 8 bits per primary color and 6 bits, it will
	  be reset to 6 bits after a mode set; use AX=4F08h to restore 8 bits
SeeAlso: AX=4E03h,AX=4F00h,AX=4F01h,AX=4F03h,AX=4F08h

(Table 00083)
Values for VESA video mode:
 00h-FFh OEM video modes (see #00010 at AH=00h)
 100h	640x400x256
 101h	640x480x256
 102h	800x600x16
 103h	800x600x256
 104h	1024x768x16
 105h	1024x768x256
 106h	1280x1024x16
 107h	1280x1024x256
 108h	80x60 text
 109h	132x25 text
 10Ah	132x43 text
 10Bh	132x50 text
 10Ch	132x60 text
---VBE v1.2+ ---
 10Dh	320x200x32K
 10Eh	320x200x64K
 10Fh	320x200x16M
 110h	640x480x32K
 111h	640x480x64K
 112h	640x480x16M
 113h	800x600x32K
 114h	800x600x64K
 115h	800x600x16M
 116h	1024x768x32K
 117h	1024x768x64K
 118h	1024x768x16M
 119h	1280x1024x32K (1:5:5:5)
 11Ah	1280x1024x64K (5:6:5)
 11Bh	1280x1024x16M
---VBE 2.0+ ---
 120h	1600x1200x256
 121h	1600x1200x32K
 122h	1600x1200x64K
81FFh	special full-memory access mode
Notes:	the special mode 81FFh preserves the contents of the video memory and
	  gives access to all of the memory; VESA recommends that the special
	  mode be a packed-pixel mode.	For VBE 2.0+, it is required that the
	  VBE implement the mode, but not place it in the list of available
	  modes (mode information for this mode can be queried directly,
	  however).
	as of VBE 2.0, VESA will no longer define video mode numbers
SeeAlso: #00010,#00011,#00084,#00191
Index:	video modes;VESA

(Table 00084)
Values for S3 OEM video mode:
 201h	640x480x256
 202h	800x600x16
 203h	800x600x256
 204h	1024x768x16
 205h	1024x768x256
 206h	1280x960x16
 207h	1152x864x256 (Diamond Stealth 64)
 208h	1280x1024x16
 209h	1152x864x32K
 20Ah	1152x864x64K (Diamond Stealth 64)
 20Bh	1152x864x4G
 211h	640x480x64K (Diamond Stealth 24)
 211h	640x400x4G  (Diamond Stealth64 Video / Stealth64 Graphics)
 212h	640x480x16M (Diamond Stealth 24)
 301h	640x480x32K
Note:	these modes are only available on video cards using S3's VESA driver
SeeAlso: #00083,#00191,#00732 at INT 1A/AX=B102h
Index:	video modes;S3

Format of VESA VBE CRTC Information Block:
Offset	Size	Description	(Table 04083)
 00h	WORD	total number of pixels horizontally
 02h	WORD	horizontal sync start (in pixels)
 04h	WORD	horizontal sync end (in pixels)
 06h	WORD	total number of scan lines
 08h	WORD	vertical sync start (in scan lines)
 0Ah	WORD	vertical sync end (in scan lines)
 0Ch	BYTE	flags (see #04084)
 0Dh	DWORD	pixel clock, in Hz
 11h	WORD	refresh rate, in 0.01 Hz units
		this field MUST be set to pixel_clock / (HTotal * VTotal),
		  even though it may not actually be used by the VBE
		  implementation
 13h 40 BYTEs	reserved

Bitfields for VESA VBE CRTC Information Block flags:
Bit(s)	Description	(Table 04084)
 0	enable double scanning
 1	enable interlacing
 2	horizontal sync polarity (0 positive, 1 negative)
 3	vertical sync polarity (0 positive, 1 negative)
SeeAlso: #04083
--------V-104F03-----------------------------
INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
	AX = 4F03h
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
		BX = video mode (see #00083,#00084)
		    bit 13: VBE/AF v1.0P accelerated video mode
		    bit 14: linear frame buffer enabled (VBE v2.0+)
		    bit 15: don't clear video memory
	    01h failed
SeeAlso: AH=0Fh,AX=4E04h,AX=4F02h
--------V-104F04-----------------------------
INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
	AX = 4F04h
	DL = subfunction
	    00h get state buffer size
		Return: BX = number of 64-byte blocks needed
	    01h save video states
		ES:BX -> buffer
	    02h restore video states
		ES:BX -> buffer
	CX = states to save/restore (see #00085)
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
	    01h failed
SeeAlso: AH=1Ch,AX=5F90h,AX=5FA0h

Bitfields for VESA SuperVGA states to save/restore:
Bit(s)	Description	(Table 00085)
 0	video hardware state
 1	video BIOS data state
 2	video DAC state
 3	SuperVGA register state
SeeAlso: #00048,#00186
--------V-104F05-----------------------------
INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
	AX = 4F05h
	BH = subfunction
	    00h select video memory window
		DX = window address in video memory (in granularity units)
	    01h get video memory window
		Return: DX = window address in video memory (in gran. units)
	BL = window number
	    00h window A
	    01h window B
	ES = selector for memory-mapped registers (VBE 2.0+, when called from
	      32-bit protected mode)
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
	    01h failed
Note:	when using an accelerated video mode under VBE/AF v1.0P, the
	  application must call EnableDirectAccess before switching banks if
	  bit 9 of the video mode attributes flag is set (see #00080)
BUG:	Phoenix S3 Trio64V+ v1.02-02 reportedly returns garbage in DX for
	  subfunction 01h
SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
--------V-104F06-----------------------------
INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET LOGICAL SCAN LINE LENGTH (PIXELS)
	AX = 4F06h
	BL = subfunction
	    00h set scan line length
		CX = desired width in pixels
	    01h get scan line length
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
	    01h failed
	BX = bytes per scan line
	CX = number of pixels per scan line
	DX = maximum number of scan lines
Notes:	if the desired width is not achievable, the next larger width will be
	  set
	the scan line may be wider than the visible area of the screen
	this function is valid in text modes, provided that pixel values are
	  multiplied by the character cell width/height
SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h/BL=02h,AX=4F06h/BL=03h,AX=4F07h
--------V-104F06BL02-------------------------
INT 10 - VESA SuperVGA BIOS v2.0+ - SET LOGICAL SCAN LINE LENGTH (BYTES)
	AX = 4F06h
	BL = 02h
	CX = desired scanline width in bytes
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
	    01h failed
	BX = bytes per scan line
	CX = number of pixels per scan line
	DX = maximum number of scan lines
Notes:	if the desired width is not achievable, the next larger width will be
	  set
	the scan line may be wider than the visible area of the screen
	this function is valid in text modes, provided that pixel values are
	  multiplied by the character cell width/height
SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h,AX=4F06h/BL=03h,AX=4F07h
--------V-104F06BL03-------------------------
INT 10 - VESA SuperVGA BIOS v2.0+ - GET MAXIMUM SCAN LINE LENGTH
	AX = 4F06h
	BL = 03h
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
	    01h failed
	BX = maximum bytes per scan line
	CX = maximum number of pixels per scan line
Notes:	this function is valid in text modes, provided that pixel values are
	  multiplied by the character cell width/height
SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h,AX=4F06h/BL=02h,AX=4F07h
--------V-104F07-----------------------------
INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET DISPLAY START
	AX = 4F07h
	BL = subfunction
	    00h,80h set display start
		CX = leftmost displayed pixel in scan line
		DX = first displayed scan line
	    01h get display start
		Return: BH = 00h
			CX = leftmost displayed pixel in scan line
			DX = first displayed scan line
	BH = 00h (reserved)
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
	    01h failed
Notes:	this function is valid in text modes, provided that values are
	  multiplied by the character cell width/height
	subfunction 80h waits until vertical retrace before changing the
	  display start address (VBE v2.0+)
SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
--------V-104F07-----------------------------
INT 10 - VESA SuperVGA BIOS v3.0+ - SCHEDULED DISPLAY START
	AX = 4F07h
	BL = subfunction
	    02h,82h (VBE v3.0) schedule display start at next vertical retrace
		ECX = display start address in bytes
	    03h,83h schedule stereoscopic display start
		ECX = left image start address (in bytes)
		EDX = right image start address (in bytes)
	    04h	get scheduled display start status
		Return:	CX = start status
			    (00h no display flip, else display has flipped)
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
	    01h failed
SeeAlso: AX=4F07h"DISPLAY START",AX=4F07h"STEREOSCOPIC"
--------V-104F07-----------------------------
INT 10 - VESA SuperVGA BIOS v3.0+ - ENABLE/DISABLE STEREOSCOPIC MODE
	AX = 4F07h
	BL = subfunction
	    05h enable stereoscopic mode
	    06h	disable stereoscopic mode
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
	    01h failed
Note:	when stereoscopic mode is enabled, the display start address will
	  automatically alternate between the left and right images on every
	  vertical retrace
SeeAlso: AX=4F07h"DISPLAY START",AX=4F07h"SCHEDULED"
--------V-104F08-----------------------------
INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
	AX = 4F08h
	BL = subfunction
	    00h set DAC palette width
		BH = desired number of bits per primary color
	    01h get DAC palette width
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
		BH = current number of bits per primary (06h = standard VGA)
	    01h failed
--------V-104F09-----------------------------
INT 10 - VESA SuperVGA BIOS v2.0+ - GET/SET PALETTE ENTRIES
	AX = 4F09h
	BL = subfunction
	    00h set (primary) palette
	    01h get (primary) palette
	    02h set secondary palette data
	    03h get secondary palette data
	    80h set palette during vertical retrace
	CX = number of entries to change
	DX = starting palette index
	ES:DI -> palette buffer, array of DAC entries (see #00086)
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
	    01h failed
SeeAlso: AX=4F0Ah,AX=D000h"S3VBE"

Format of VESA VBE palette entry:
Offset	Size	Description	(Table 00086)
 00h	BYTE	red
 01h	BYTE	green
 02h	BYTE	blue
 03h	BYTE	alpha or alignment byte
--------V-104F0ABL00-------------------------
INT 10 - VESA SuperVGA BIOS v2.0+ - GET PROTECTED-MODE INTERFACE
	AX = 4F0Ah
	BL = 00h
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
		ES:DI -> protected-mode table (see #00087)
		CX = length of table in bytes, included protected-mode code
	    01h failed
SeeAlso: AX=4F00h,AX=4F05h,AX=4F07h,AX=4F09h

Format of VESA VBE 2.0 protected-mode table:
Offset	Size	Description	(Table 00087)
 00h	WORD	offset (within table) of protected-mode code for Function 5
		  (Set Window)
 02h	WORD	offset of protected-mode code for Function 7 (Set Disp Start)
 04h	WORD	offset of protected-mode code for Function 9 (Set Primary
		  Palette)
 06h	WORD	offset (within table) of list of I/O ports and memory locations
		  for which I/O privilege may be required in protected mode
		  (0000h if no list) (see #04085)
 08h	var	code and optional port/memory list

Format of VESA VBE 2.0+ protected-mode port/memory list:
Offset	Size	Description	(Table 04085)
 00h	WORD	I/O port number
	...
	WORD	FFFFh marking end of I/O port list
	DWORD	memory region base address
	WORD	memory region limit (one less than length)
	WORD	FFFFh marking end of memory region list
Note:	the memory region is optional; if not present, there will be a word
	  of FFFFh immediately following the FFFFh marking the end of the I/O
	  port list
SeeAlso: #00087
--------V-104F0A-----------------------------
INT 10 O - VESA SuperVGA BIOS v2.0 beta - GET PROTECTED-MODE CODE
	AX = 4F0Ah
	BX = function to be copied (see #00088)
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
		CX = number of bytes to copy
		ES:DI -> code for requested function
	    01h failed
SeeAlso: AX=4F09h,AX=D000h"S3VBE"

(Table 00088)
Values for VESA VBE protected-mode function identifiers:
 0001h	set bank (see AX=4F05h)
 0002h	set display start (see AX=4F07h)
 0003h	set palette (see AX=4F09h)
--------V-104F0BBL00-------------------------
INT 10 - VESA SuperVGA BIOS v3.0 - GET NEAREST PIXEL CLOCK
	AX = 4F0Bh
	BL = 00h get closest pixel clock
	ECX = requested clock frequency in Hz
	DX = video mode number
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
		ECX = nearest clock rate
	    01h failed
--------V-104F0B-----------------------------
INT 10 - VESA SuperVGA BIOS - GET VBE/AF v1.0P DEVICE CONTEXT BUFFER
	AX = 4F0Bh
	BL = subfunction
	    00h get length of device context buffer
	    01h initialize device context buffer
		ES:DI -> real-mode address of buffer (see #00089)
Return: AL = 4Fh if function supported
	AH = status
	    00h successful
		CX = number of bytes required for buffer (if BL=00h on entry)
		ES:DI buffer initialized (if BL=01h on entry)
	    01h failed
Note:	this interface description is derived from the draft VBE/AF proposal
	  (version 1.0P, document revsion 0.12P, dated 13jan95)
SeeAlso: AX=4F00h,AX=4F01h,AX=4F17h

Format of VBE/AF v1.0P Device Context buffer:
Offset	Size	Description	(Table 00089)
 00h	WORD	maximum X coordinate in frame buffer (0 = left edge)
		Note:	application must never pass X coordinate greater than
			  this value to the SetClipRect function (values are
			  NOT range-checked!)
 02h	WORD	maximum Y coordinate in frame buffer (0 = top edge)
		Note:	application must never pass Y coordinate greater than
			  this value to the SetClipRect function
 04h	DWORD	-> "SetForeColor" to set foreground color/mix (see #00091)
 08h	DWORD	-> "SetBackColor" to set background color/mix (see #00092)
 0Ch	DWORD	-> "SetClipRect" set hardware clipping rectangle (see #00093)
 10h	DWORD	-> function "DrawScan" to draw a single scan line
 14h	DWORD	-> function "DrawScanList" to draw a list of scan lines
 18h	DWORD	-> function "DrawRect" to draw a solid rectangle
 1Ch	DWORD	-> function "DrawLine" to draw a solid line
 20h	DWORD	-> function "DrawPattScan" to draw a patterned scan line
 24h	DWORD	-> function "BitBlt" to perform screen-to-screen BitBLT
 28h	DWORD	-> "TransBitBlt" to perform transparent screen-to-screen BitBLT
 2Ch	DWORD	-> "MonoBitBlt" to monochrome expansion screen-to-screen BitBLT
 30h	DWORD	-> function "SetCursor" to download hardware cursor image
 34h	DWORD	-> function "SetCursorPos" to set hardware cursor position
 38h	DWORD	-> function "SetCursorColor" to set hardware cursor color
 3Ch	DWORD	-> function "ShowCursor" to show/hide hardware cursor
 40h	DWORD	-> function "WaitTillIdle" to wait until graphics engine idle
 44h	DWORD	-> "EnableDirectAccess" to enable direct framebuffer access
 48h	DWORD	-> "DisableDirectAccess" to disable direct framebuffer access
 4Ch	DWORD	-> "BankSwitchCB" bank-switching callback function
		(set by application, may simply point at 32-bit VBE 2.0 bank
		  switching entry point)
 50h	WORD	"VidMemSel" selector for video memory (must be set by app)
 52h	WORD	"IOPortsOff" offset of I/O ports table in context buffer
 54h	WORD	"IOMemoryOff" offset of I/O memory table in context buffer
 56h	WORD	"IOMemSel1" selector for first I/O memory area specified by
		  I/O memory table (must be set by application)
 58h	WORD	"IOMemSel2" selector for second I/O memory area
 5Ah	WORD	"IOMemSel3" selector for third I/O memory area
 5Ch	WORD	"IOMemSel4" selector for fourth I/O memory area
 5Eh  N BYTEs	device-specific state buffer
      N WORDs	I/O port access table (list of ports, last entry is FFFFh)
      N DWORDs	I/O memory access table (list of physical-address/length pairs,
		  last entry is FFFFFFFFh)
      N BYTEs	32-bit code for VBE/AF v1.0P function
Notes:	all function pointers are offsets into the 32-bit code within the
	  context buffer, and should be updated to point at the actual
	  functions after the application has copied the buffer from the
	  real-mode memory used for the interrupt call into its own flat-model
	  memory space
	any functions which are not supported by the hardware have function
	  pointers which are set to 00000000h initially

(Table 00090)
Values for VBE/AF v1.0P color mixing mode:
 00h	replace
 01h	XOR with existing pixel
 02h	OR with existing pixel
 03h	AND with existing pixel
SeeAlso: #00091,#00090

(Table 00091)
Call VBE/AF v1.0P function "SetForeColor" with:
	ES:EDI -> device context buffer (see #00089)
	EAX = new foreground color (format varies by video mode)
	BL = new foreground mixing mode (see #00090)
SeeAlso: #00089,#00092,#00107

(Table 00092)
Call VBE/AF v1.0P function "SetbackColor" with:
	ES:EDI -> device context buffer (see #00089)
	EAX = new background color (format varies by video mode)
	BL = new background mixing mode (see #00090)
SeeAlso: #00089,#00091,#00093

(Table 00093)
Call VBE/AF v1.0P function "SetClipRect" with:
	ES:EDI -> device context buffer (see #00089)
	EAX = left clipping coordinate
	EBX = top clipping coordinate
	ECX = right clipping coordinate
	EDX = bottom clipping coordinate
SeeAlso: #00089,#00092,#00094,#00107

(Table 00094)
Call VBE/AF v1.0P function "DrawScan" with:
	ES:EDI -> device context buffer (see #00089)
	EAX = X1 coordinate
	EBX = Y coordinate
	ECX = X2 coordinate
Desc:	draw a solid horizontal line from (X1,Y) to (X2,Y) in the currently-
	  active foreground color and mix, omitting the pixel at the largest
	  X coordinate
SeeAlso: #00089,#00093,#00095,#00098,#00107

(Table 00095)
Call VBE/AF v1.0P function "DrawScanList" with:
	ES:EDI -> device context buffer (see #00089)
	EAX = Y coordinate of first line
	EBX = length of scan list
	DS:ESI -> scanline list X coordinates (2N WORDs)
Desc:	draw multiple solid horizontal lines at successive Y coordinates,
	  using the currently-active foreground color and mix, omitting the
	  pixel at the largest X coordinate for each line
Note:	the scanline list consists of pairs of X coordinates; because the
	  last pixel is omitted, a scanline will be skipped if X1==X2
SeeAlso: #00089,#00094,#00096,#00107

(Table 00096)
Call VBE/AF v1.0P function "DrawRect" with:
	ES:EDI -> device context buffer (see #00089)
	EAX = left coordinate
	EBX = top coordinate
	ECX = right coordinate
	EDX = bottom coordinate
Desc:	draw a solid rectangle in the currently-active foreground color and
	  mix, omitting the rightmost X coordinate and bottom-most scan line
Note:	results are undefined if EAX>ECX or EBX>EDX; nothing will be drawn if
	  EAX=ECX or EBX=EDX
SeeAlso: #00089,#00094,#00095,#00097

(Table 00097)
Call VBE/AF v1.0P function "DrawLine" with:
	ES:EDI -> device context buffer (see #00089)
	EAX = ??? (specified this way in the draft documentation!)
	EBX = ???
	ECX = ???
	EDX = ???
	ESI = ???
Desc:	draw a solid line in the currently-active foreground color and mix,
	  given the Bresenham parameters
SeeAlso: #00089,#00094,#00096,#00098

(Table 00098)
Call VBE/AF v1.0P function "DrawPattScan" with:
	ES:EDI -> device context buffer (see #00089)
	EAX = X1 coordinate
	EBX = Y coordinate
	ECX = X2 coordinate
	DL = 8-bit stipple pattern
Desc:	draw a patterned horizontal line from (X1,Y) to (X2,Y) in the
	  currently-active foreground color and mix, omitting the pixel at
	  the largest X coordinate
Note:	for each pixel in the line, if DL bit (X mod 8) is set, the pixel is
	  drawn, and left untouched if the bit is clear
SeeAlso: #00089,#00096,#00097,#00094,#00099,#00107

(Table 00099)
Call VBE/AF v1.0P function "BitBlt" with:
	ES:EDI -> device context buffer (see #00089)
	DS:ESI -> BitBlt parameter block (see #00100)
	BL = mix operation
	    00h replace
	    01h XOR
	    02h OR
	    03h AND
SeeAlso: #00089,#00094,#00098,#00101,#00107

Format of VBE/AF BitBlt parameter block:
Offset	Size	Description	(Table 00100)
 00h	WORD	left coordinate of source rectangle
 02h	WORD	top coordinate of source rectangle
 04h	WORD	right coordinate of source rectangle
 06h	WORD	bottom coordinate of source rectangle
 08h	WORD	left coordinate of destination rectangle
 0Ah	WORD	top coordinate of destination rectangle
 0Ch	BYTE	horizontal direction: 00h = decrement X, 01h = increment X
 0Dh	BYTE	vertical direction: 00h = decrement Y, 01h = increment Y
Notes:	the rightmost pixel(s) and bottom-most scan line are not copied
	the horizontal/vertical direction flags are used to ensure correct
	  copies when the source and destination rectangles overlap
SeeAlso: #00099

(Table 00101)
Call VBE/AF v1.0P function "TransBitBlt" with:
	ES:EDI -> device context buffer (see #00089)
	DS:ESI -> BitBlt parameter block (see #00100)
	BL = mix operation
	    00h replace
	    01h XOR
	    02h OR
	    03h AND
	ECX = transparent color
Desc:	copy a rectangular area from one location to another, treating pixels
	  with the specified color as transparent (leaving the destination
	  unchanged)
SeeAlso: #00089,#00099,#00102,#00107

(Table 00102)
Call VBE/AF v1.0P function "MonoBitBlt" with:
	ES:EDI -> device context buffer (see #00089)
	DS:ESI -> BitBlt parameter block (see #00100)
	BL = mix operation
	    00h replace
	    01h XOR
	    02h OR
	    03h AND
	BH = bit-plane from which to read
Desc:	copy a rectangular area from one location to another, expanding a
	  single bit of each source pixel
SeeAlso: #00089,#00099,#00101

(Table 00103)
Call VBE/AF v1.0P function "SetCursor" with:
	ES:EDI -> device context buffer (see #00089)
	DS -> application's data segment
	ESI -> 32x32 cursor data, in Windows 3.1 cursor-file format
		(32 DWORDs of XOR mask followed by 32 DWORDs of AND mask)
SeeAlso: #00089,#00094,#00104,#00105

(Table 00104)
Call VBE/AF v1.0P function "SetCursorPos" with:
	ES:EDI -> device context buffer (see #00089)
	EAX = cursor X coordinate
	EBX = cursor Y coordinate
	CL = cursor's X hotspot
	CH = cursor's Y hotspot
SeeAlso: #00089,#00103,#00105

(Table 00105)
Call VBE/AF v1.0P function "SetCursorColor" with:
	ES:EDI -> device context buffer (see #00089)
	AL = 8-bit color index, or color's Red value
	AH = color's Green value (16-bpp, 24-bpp, 32-bpp modes)
	BL = color's Blue value (16-bpp, 24-bpp, 32-bpp modes)
SeeAlso: #00089,#00103,#00104,#00106

(Table 00106)
Call VBE/AF v1.0P function "ShowCursor" with:
	ES:EDI -> device context buffer (see #00089)
	AL = new visibility (00h hide cursor, 01h show cursor)
SeeAlso: #00089,#00103,#00104,#00105

(Table 00107)
Call VBE/AF v1.0P function "WaitTillIdle" with:
	ES:EDI -> device context buffer (see #00089)
Desc:	pause until the hardware accelerator has completed all pending
	  operations
SeeAlso: #00089,#00108,#00109

(Table 00108)
Call VBE/AF v1.0P function "EnableDirectAccess" with:
	ES:EDI -> device context buffer (see #00089)
SeeAlso: #00089,#00109,#00107,AX=4F05h,#00078,#00080

(Table 00109)
Call VBE/AF v1.0P function "DisableDirectAccess" with:
	ES:EDI -> device context buffer (see #00089)
SeeAlso: #00089,#00108
--------V-104F0C-----------------------------
INT 10 - VESA SuperVGA BIOS - RESERVED FOR FUTURE SVGA FUNCTIONS
	AX = 4F0Ch-4F0Fh
SeeAlso: AX=4F00h

